package io.sunny.platform.backend.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author SUNNY
 * @Date 2025/10/20 17:29
 * @PackageName: io.sunny.platform.backend.common.annotation
 * @Description: TODO
 * @Version 1.0
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Audit {
    /**
     * 从实体中提取ID字段名
     */
    String idField() default "id";

    /**
     * 从方法参数中直接获取ID
     */
    String idParam() default "";

    /**
     * 操作类型推断
     */
    ActionType action() default ActionType.AUTO;

    /**
     * 操作人参数名
     */
    String actorParam() default "";

    /**
     * 实体参数位置
     */
    int entityIndex() default 0;

    enum ActionType {
        CREATE, UPDATE, DELETE, AUTO
    }
}
